// public
// class Solution
// {
// public
//     ListNode mergeKLists(ArrayList<ListNode> lists)
//     {
//         PriorityQueue<ListNode> heap = new PriorityQueue<>((l1, l2)->{
//             return l1.val - l2.val;
//         });
//         for (int i = 0; i < lists.size(); i++)
//         {
//             if (lists.get(i) != null)
//             {
//                 heap.offer(lists.get(i));
//             }
//         }
//         ListNode ret = new ListNode(0);
//         ListNode prev = ret;
//         while (!heap.isEmpty())
//         {
//             ListNode t = heap.poll();
//             prev = prev.next = t;
//             if (t.next != null)
//             {
//                 heap.offer(t.next);
//             }
//         }
//         return ret.next;
//     }
// }


// #include <iostream>
// #include <algorithm>
// #include <string>
// #include <vector>
// using namespace std;
// int main()
// {
//     string s,del;
//     getline(cin,s);
//     cin>>del;
//     bool hash[256]={0};
//     for(auto e:del) hash[e]=true;
//     for(auto e:s)
//         if(!hash[e]) cout<<e;
//     return 0;
// }

// #include <iostream>
// #include <algorithm>
// #include <string>
// #include <vector>
// using namespace std;
// struct ListNode
// {
//     int val;
//     struct ListNode *next;
//     ListNode(int x) : val(x), next(NULL)
//     {
//     }
// };
// class Solution
// {
// public:
//     ListNode *FindFirstCommonNode(ListNode *pHead1, ListNode *pHead2)
//     {
//         int num1 = 0, num2 = 0;
//         ListNode *head1 = pHead1, *head2 = pHead2;
//         while (head1 != nullptr)
//             head1 = head1->next, num1++;
//         while (head2 != nullptr)
//             head2 = head2->next, num2++;

//         head1 = pHead1, head2 = pHead2;
//         int gap = abs(num1 - num2);
//         if (num1 < num2)
//             swap(head1, head2);
//         while (gap--)
//             head1 = head1->next;
//         while (head1 != head2)
//         {
//             head1 = head1->next, head2 = head2->next;
//         }
//         return head1;
//     }
// };
